import os
from langchain.agents import create_tool_calling_agent, AgentExecutor, create_react_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import tool
from large_model.mode_interface.model_interface import ChatInterface


# 1. 定义工具
@tool
def generate_random_ints() -> list:
    """生成6个不重复的正整数，范围在1到25之间"""
    import random
    return random.sample(range(1, 26), 6)


# 工具列表
tools = [generate_random_ints]

# 2. 初始化模型并绑定工具
llm = ChatInterface().chat_model()
# llm_with_tools = llm.bind_tools(tools)

# 3. 创建包含必需变量的提示模板 (关键修复)
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个有用的助手，可以调用工具完成任务。"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),  # 添加必需的占位符
])

# # 4. 创建代理
agent = create_tool_calling_agent(llm, tools, prompt)

# 5. 创建代理执行器
agent_executor = AgentExecutor(
    # 核心代理对象
    agent=agent,
    # 可用工具列表
    tools=tools,
    # 关闭过程， 只返回结果
    verbose=False,
    # 最大执行轮次限制
    max_iterations=3,
    # 30秒超时
    max_execution_time=30
)

# 6. 执行代理
result = agent_executor.invoke(
    {"input": "请生成6个随机数,你只需要返回结果即可， 只返回生成的随机数，不要返回其他内容，使用列表的格式返回"})
print(result["output"])
